import _config from './config'; // 导入私有配置

const APP_TICKET = 'APP_TICKET';

export const https = (options) => {
	console.log(_config.url , options.url)
	options.url = _config.url + options.url;
	options.data = Object.assign({},{'lyx-ticket': getTicket()}, options.data)
	
  return new Promise((resolve, reject) => {
		// 进行url字符串拼接
    // 拦截请求
    _config.complete = (response) => {
      //  request請求访问成功
      if (response.statusCode === 200) {
          // 接口请求成功
					console.log('接口请求成功',response)
          resolve(_success(response));
      } else {
        // 处理catch 请求，不在本页面之外处理，统一在这里处理
				if(options.handle){
					reject(response)
				}else{
					try {
					  Promise.reject(response).catch(err => {
					    // console.error(err);  
					    _page_error(response.statusCode || response.errMsg);
					  });
					} catch (e) {
					  console.log(e)
					}
				}
      }

    }
    // 开始请求
    uni.request(Object.assign({},_config, options));
  })
}

export const getUrl = (url) =>{
	return _config.url + url;
}

export const getTickets = () =>{
	return getTicket();
}


//成功统一处理
function _success(response){
	let data = response.data
	console.log(JSON.stringify(data))
	if(data.status == 10086){
		//登录成功接口
		setTicket(data.result);
	}
	if(data.status == 1201){
		   uni.showModal({
		       title: '未登录',
		       content: '您未登录，需要登录后才能继续',
		       /**
		        * 如果需要强制登录，不显示取消按钮
		        */
		       showCancel: true,
		       success: (res) => {
		           if (res.confirm) {
		   			/**
		   			 * 如果需要强制登录，使用reLaunch方式
		   			 */

		                   uni.reLaunch({
		                       url: '../login/login'
		                   });
		               
		           }
		       }
		   });
	}
	return data;
}

function getTicket(){
	let ret = uni.getStorageSync(APP_TICKET);
	return ret.ticket;
}

function setTicket(data){
	uni.setStorageSync(APP_TICKET, data);
}

// 接口錯誤
function _error(err, msg = '') {
  switch (err) {
    case 400:
      console.error(msg)
      // 错误码400的处理方式
      break;
  }
}
// request 錯誤
function _page_error(err) {
  switch (err) {
		case 401:
		  // 错误码404的处理方式
		  console.error("请求背拒绝")
		  break;
    case 404:
      // 错误码404的处理方式
      console.error("没有找到页面")
      break;
    case 405:
      console.error("错误的请求")
      break;
  }
}

export default {
	https,
	getUrl,
	getTickets
	
}